<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
        描述
          找出元素 item 在给定数组 arr 中的位置
        输出描述：
          如果数组中存在 item，则返回元素在数组中的位置，否则返回 -1

        示例
          indexOf([ 1, 2, 3, 4 ], 3) // 返回 2
          没有找到返回-1
        要求：不能用arr.indexOf(item)
        */

      // 查找数组元素位置
      // 完成此函数
      // arr = [1,2,3,4,2], item = 2
      function indexOf(arr, item) {
        let index = -1
        // arr.forEach((n, i) => {
        //   if (item === n && index===-1) { index = i;}
        // })
        for(let i=0; i<arr.length; i++) {
          if (item === arr[i]) {
            return i
          }
        }
        return index
      }

      console.log(indexOf([1, 2, 3, 4], 3)) // 返回2

      /*
        描述
        合并数组 arr1 和数组 arr2。不要直接修改数组 arr，结果返回新的数组
        concat([1, 2, 3, 4], ['a', 'b', 'c', 1])
        返回 [1, 2, 3, 4, 'a', 'b', 'c', 1]
        要求不能用arr1.concat(arr2)
      */

      function concat(arr1, arr2) {
        //  你的代码
        // return [...arr1, ...arr2]
        let ret = []
        for(let i=0; i<arr1.length; i++) {
          ret.push(arr1[i])
        }
        for(let i=0; i<arr2.length; i++) {
          ret.push(arr2[i])
        }
        return ret
      }

      console.log(concat([1, 2, 3, 4], ['a', 'b', 'c', 1]))

      /*
        描述
        实现 fizzBuzz 函数，参数 num 与返回值的关系如下：
        1、如果 num 能同时被 3 和 5 整除，返回字符串 fizzbuzz
        2、如果 num 能被 3 整除，返回字符串 fizz
        3、如果 num 能被 5 整除，返回字符串 buzz
        4、如果参数为空或者不是 Number 类型，返回 false
        5、其余情况，返回参数 num

        fizzBuzz(15) // fizzbuzz
        */
      function fizzBuzz(num) {
        switch(true) {
          case num % 3 === 0 && num % 5 === 0:
            return 'fizzbuzz'
          case num %3 ===0 : return 'fizz'
          case num %5 ===0 : return 'buzz'
          case num === undefined || isNaN(num): return false
          default:
            return num
        }
      }
      console.log(fizzBuzz(15)) // fizzbuzz
    </script>
  </body>
</html>
